package shuanfa;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class QuickSort {
    public static void main(String[] args) {
        //int[] arr=new int[]{3,4,6,7,2,7,2,8,0};
        //quickSort(arr,0,arr.length-1);
        //System.out.println("排序后"+Arrays.toString(arr));
        int[] arr=new int[80000];
        for (int i = 0; i < 80000; i++) {
            arr[i]=(int)(Math.random()*80000);
        }
        Date date1=new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = simpleDateFormat.format(date1);
        System.out.println("排序前的时间"+format);
        quickSort(arr,0,arr.length-1);
        Date date2=new Date();
        String format1 = simpleDateFormat.format(date2);
        System.out.println("排序后的时间"+format1);
    }
    public static void quickSort(int[] arr,int start,int end ){
        if(start<end){
            //定义第零个数为基准数
            int stard=arr[start];
            //定义左右起始下标
            int low=start;
            int high=end;
            while (low<high){
                //如果高位数大于基准数，高位下标左移一位 直至找到比基准值小的那个数
                while (low<high&&arr[high]>stard){
                    high--;
                }
                //使用右边的数字替换左边的数字
                arr[low]=arr[high];
                //如果低位数小于于基准数，低位下标右移一位 直至找到比基准值大的那个数
                while (low<high&&arr[low]<=stard){
                    low++;
                }
                //使用左边的数字替换右边的数字
                arr[high]=arr[low];
            }
            arr[low]=stard;
            //处理所有小的数字
            quickSort(arr,start,low-1);
            //处理所有大的数字
            quickSort(arr,low+1,end);
        }
    }
}
